﻿using System;
using System.Windows;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using Sinacor.Infra.UI.Common;
using Sinacor.Infra.UI.Controls;
using Sinacor.Infra.UI.Controls.SmartClient;
using Sinacor.UI.Bovespa.Alocacao.Presenter;

namespace Sinacor.UI.Bovespa.Alocacao.View.SmartClient
{
    public partial class InconsistenciaMensagemRecebida : SinacorWindow, IMensagemErroRecebida
    {
        #region Propriedade

        public Presenter.MensagemErroRecebida Presenter { get; set; }

        #endregion
        
        #region Construtor

        public InconsistenciaMensagemRecebida()
        {
            InitializeComponent();

            // Inicialize a presenter no construtor
            this.Presenter = new Presenter.MensagemErroRecebida(this);

            // Configure a presenter no DataContext da janela (para facilitar os bindings)
            this.DataContext = this.Presenter;

            // Configurando o Type de novos itens da grid, só necessário qunado a grid permitir inclusão
            // Obs: Esta property foi configurada no Code-Behind porque quando configurada no XAML o type
            // não é encontrado.
            this.DtgInconsistencias.NewItemType = typeof(Model.MensagemErroRecebida);

            this.AfterInitialize += new RoutedEventHandler(InconsistenciaMensagemRecebida_AfterInitialize);
        }        

        #endregion

        #region AfterInitialize

        private void InconsistenciaMensagemRecebida_AfterInitialize(object sender, RoutedEventArgs e)
        {
            this.Presenter.Inicializar();
        }

        #endregion

        #region Eventos

        private void CkbExibirAvisosNaoTrataveis_Click(object sender, RoutedEventArgs e)
        {
            this.ShowUserWaitingProcess();

            this.Presenter.ConsultarMensagemErroRecebida();

            this.HideUserWaitingProcess();
        }

        private void ContextMenu_Acertar_Click(object sender, RoutedEventArgs e)
        {
            this.ShowUserWaitingProcess();

            this.Presenter.ProcessarAcerto();

            this.HideUserWaitingProcess();
        }

        private void ContextMenu_Atualizar_Click(object sender, RoutedEventArgs e)
        {
            this.ShowUserWaitingProcess();

            this.Presenter.ConsultarMensagemErroRecebida();

            this.HideUserWaitingProcess();
        }

        #endregion

        #region IMensagemErroRecebida Members

        public void AtualizarListaMensagemErroRecebida()
        {
            this.DtgInconsistencias.UpdateTarget(SinacorDataGrid.ItemsSourceProperty);
        }

        public void InformarPesquisaSemRetorno()
        {
            SinacorMessageBox.Show(this.FindResource("Bovespa.Alocacao.Message.PesquisaSemRetorno").ToString(), SinacorMessageBoxButton.Ok, SinacorMessageBoxImage.Exclamation);
        }

        #endregion
    }
}